{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "cell_id": "e00d31f2766d45be9c6d9fe9c4405f43",
    "deepnote_app_coordinates": {
     "h": 5,
     "w": 12,
     "x": 0,
     "y": 12
    },
    "deepnote_cell_type": "code",
    "deepnote_to_be_reexecuted": false,
    "execution_millis": 3632,
    "execution_start": 1670940580644,
    "id": "7C1D282356B24CDB8C600C9CEA1265C8",
    "jupyter": {},
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "source_hash": "459e9ef",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "数据特征： Avg. Area Income, Avg. Area House Age, Avg. Area Number of Rooms, Avg. Area Number of Bedrooms, Area Population\n",
      "数据标签： Price\n",
      "数据总条数： 5000\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import MaxNLocator\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 从源文件加载数据，并输出查看数据的各项特征\n",
    "lines = np.loadtxt('USA_Housing.csv', delimiter=',', dtype='str')\n",
    "header = lines[0]\n",
    "lines = lines[1:].astype(float)\n",
    "print('数据特征：', ', '.join(header[:-1]))\n",
    "print('数据标签：', header[-1])\n",
    "print('数据总条数：', len(lines))\n",
    "\n",
    "# 划分训练集与测试集\n",
    "ratio = 0.8\n",
    "split = int(len(lines) * ratio)\n",
    "np.random.seed(0)\n",
    "lines = np.random.permutation(lines)\n",
    "train, test = lines[:split], lines[split:]\n",
    "\n",
    "# 数据归一化\n",
    "scaler = StandardScaler()\n",
    "scaler.fit(train) # 只使用训练集的数据计算均值和方差\n",
    "train = scaler.transform(train)\n",
    "test = scaler.transform(test)\n",
    "\n",
    "# 划分输入和标签\n",
    "x_train, y_train = train[:, :-1], train[:, -1].flatten()\n",
    "x_test, y_test = test[:, :-1], test[:, -1].flatten()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "cell_id": "631dd97e9da843529d3b5cc29f08380c",
    "deepnote_app_coordinates": {
     "h": 5,
     "w": 12,
     "x": 0,
     "y": 24
    },
    "deepnote_cell_type": "code",
    "deepnote_to_be_reexecuted": false,
    "execution_millis": 25,
    "execution_start": 1670940584324,
    "id": "8EE5DC43F8734EF0A41032B8E4A94857",
    "jupyter": {},
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "source_hash": "74324f1b",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "回归系数： [  6.50881254e-01   4.67222833e-01   3.38466198e-01   6.17275856e-03\n",
      "   4.26857089e-01  -1.46245863e-14]\n",
      "RMSE： 0.287918342475\n"
     ]
    }
   ],
   "source": [
    "# 在X矩阵最后添加一列1，代表常数项\n",
    "X = np.concatenate([x_train, np.ones((len(x_train), 1))], axis=-1)\n",
    "# @ 表示矩阵相乘，X.T表示矩阵X的转置，np.linalg.inv函数可以计算矩阵的逆\n",
    "theta = np.linalg.inv(X.T @ X) @ X.T @ y_train\n",
    "print('回归系数：', theta)\n",
    "\n",
    "# 在测试集上使用回归系数进行预测\n",
    "X_test = np.concatenate([x_test, np.ones((len(x_test), 1))], axis=-1)\n",
    "y_pred = X_test @ theta\n",
    "\n",
    "# 计算预测值和真实值之间的RMSE\n",
    "rmse_loss = np.sqrt(np.square(y_test - y_pred).mean())\n",
    "print('RMSE：', rmse_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "cell_id": "24bf3567aade4e37bb37b9ce1aa012ee",
    "deepnote_app_coordinates": {
     "h": 5,
     "w": 12,
     "x": 0,
     "y": 36
    },
    "deepnote_cell_type": "code",
    "deepnote_to_be_reexecuted": false,
    "execution_millis": 285,
    "execution_start": 1670940584358,
    "id": "76377D8991204084A0861ED8AC2C9A8E",
    "jupyter": {},
    "notebookId": "60364796c614ab001504cecf",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "source_hash": "660b9b9c",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "回归系数： [ 0.65088125  0.46722283  0.3384662   0.00617276  0.42685709] -1.46350418828e-14\n",
      "RMSE： 0.287918342475\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "# 初始化线性模型\n",
    "linreg = LinearRegression()\n",
    "# LinearRegression的方法中已经考虑了线性回归的常数项，所以无须再拼接1\n",
    "linreg.fit(x_train, y_train)\n",
    "\n",
    "# coef_是训练得到的回归系数，intercept_是常数项\n",
    "print('回归系数：', linreg.coef_, linreg.intercept_)\n",
    "y_pred = linreg.predict(x_test)\n",
    "\n",
    "# 计算预测值和真实值之间的RMSE\n",
    "rmse_loss = np.sqrt(np.square(y_test - y_pred).mean())\n",
    "print('RMSE：', rmse_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nf1fKWamlfv+EAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x19945289cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 可视化\n",
    "plt.figure(figsize=(12, 6))\n",
    "\n",
    "# 真实值与预测值对比\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.scatter(y_test, y_pred, alpha=0.6, edgecolors='w', linewidth=0.5)\n",
    "plt.xlabel('真实值')\n",
    "plt.ylabel('预测值')\n",
    "plt.title('真实值 vs 预测值')\n",
    "plt.gca().set_aspect('equal', adjustable='box')\n",
    "plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], 'r--', lw=2)\n",
    "\n",
    "# 预测误差分布\n",
    "plt.subplot(1, 2, 2)\n",
    "errors = y_test - y_pred\n",
    "plt.hist(errors, bins=30, edgecolor='k', alpha=0.7)\n",
    "plt.xlabel('预测误差')\n",
    "plt.ylabel('频数')\n",
    "plt.title('预测误差分布')\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "cell_id": "183cc001f0f346388b5b989a5a2f6e8a",
    "collapsed": true,
    "deepnote_app_coordinates": {
     "h": 5,
     "w": 12,
     "x": 0,
     "y": 48
    },
    "deepnote_cell_type": "code",
    "deepnote_to_be_reexecuted": false,
    "execution_millis": 7,
    "execution_start": 1670940584648,
    "id": "6A170DBCED294C5D974A0AA09ABCED68",
    "jupyter": {},
    "notebookId": "60364796c614ab001504cecf",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "source_hash": "d9c08b45",
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 该函数每次返回大小为batch_size的批量\n",
    "# x和y分别为输入和标签\n",
    "# 若shuffle = True，则每次遍历时会将数据重新随机划分\n",
    "def batch_generator(x, y, batch_size, shuffle=True):\n",
    "    # 批量计数器\n",
    "    batch_count = 0\n",
    "    if shuffle:\n",
    "        # 随机生成0到len(x)-1的下标\n",
    "        idx = np.random.permutation(len(x))\n",
    "        x = x[idx]\n",
    "        y = y[idx]\n",
    "    while True:\n",
    "        start = batch_count * batch_size\n",
    "        end = min(start + batch_size, len(x))\n",
    "        if start >= end:\n",
    "            # 已经遍历一遍，结束生成\n",
    "            break\n",
    "        batch_count += 1\n",
    "        yield x[start: end], y[start: end]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "cell_id": "cd1a09135411483ca7eea45cae5587cb",
    "deepnote_app_coordinates": {
     "h": 5,
     "w": 12,
     "x": 0,
     "y": 54
    },
    "deepnote_cell_type": "code",
    "deepnote_to_be_reexecuted": false,
    "execution_millis": 405,
    "execution_start": 1670941330071,
    "id": "69246F1036B24E3B84F7F2954B383DDD",
    "jupyter": {},
    "notebookId": "60364796c614ab001504cecf",
    "scrolled": false,
    "slideshow": {
     "slide_type": "slide"
    },
    "source_hash": "e4f2f06c",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "回归系数： [ 0.65357756  0.46682964  0.33885411  0.00720843  0.42751035 -0.00273407]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nuwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x22b18b75908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def SGD(num_epoch, learning_rate, batch_size):\n",
    "    # 拼接原始矩阵\n",
    "    X = np.concatenate([x_train, np.ones((len(x_train), 1))], axis=-1)\n",
    "    X_test = np.concatenate([x_test, np.ones((len(x_test), 1))], axis=-1)\n",
    "    # 随机初始化参数\n",
    "    theta = np.random.normal(size=X.shape[1])\n",
    "\n",
    "    # 随机梯度下降\n",
    "    # 为了观察迭代过程，我们记录每一次迭代后在训练集和测试集上的均方根误差\n",
    "    train_losses = []\n",
    "    test_losses = []\n",
    "    for i in range(num_epoch):\n",
    "        # 初始化批量生成器\n",
    "        batch_g = batch_generator(X, y_train, batch_size, shuffle=True)\n",
    "        train_loss = 0\n",
    "        for x_batch, y_batch in batch_g:\n",
    "            # 计算梯度\n",
    "            grad = x_batch.T @ (x_batch @ theta - y_batch)\n",
    "            # 更新参数\n",
    "            theta = theta - learning_rate * grad / len(x_batch)\n",
    "            # 累加平方误差\n",
    "            train_loss += np.square(x_batch @ theta - y_batch).sum()\n",
    "        # 计算训练和测试误差\n",
    "        train_loss = np.sqrt(train_loss / len(X))\n",
    "        train_losses.append(train_loss)\n",
    "        test_loss = np.sqrt(np.square(X_test @ theta - y_test).mean())\n",
    "        test_losses.append(test_loss)\n",
    "\n",
    "    # 输出结果，绘制训练曲线\n",
    "    print('回归系数：', theta)\n",
    "    return theta, train_losses, test_losses\n",
    "\n",
    "# 设置迭代次数，学习率与批量大小\n",
    "num_epoch = 20\n",
    "learning_rate = 0.01\n",
    "batch_size = 32\n",
    "# 设置随机种子\n",
    "np.random.seed(0)\n",
    "\n",
    "_, train_losses, test_losses = SGD(num_epoch, learning_rate, batch_size)\n",
    "    \n",
    "# 将损失函数关于运行次数的关系制图，可以看到损失函数先一直保持下降，之后趋于平稳\n",
    "plt.plot(np.arange(num_epoch), train_losses, color='blue', \n",
    "    label='train loss')\n",
    "plt.plot(np.arange(num_epoch), test_losses, color='red', \n",
    "    ls='--', label='test loss')\n",
    "# 由于epoch是整数，这里把图中的横坐标也设置为整数\n",
    "# 该步骤也可以省略\n",
    "plt.gca().xaxis.set_major_locator(MaxNLocator(integer=True))\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('RMSE')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "cell_id": "3a4a37ec15aa42f9bfd69128c327fce9",
    "deepnote_app_coordinates": {
     "h": 5,
     "w": 12,
     "x": 0,
     "y": 0
    },
    "deepnote_cell_type": "code",
    "deepnote_to_be_reexecuted": false,
    "execution_millis": 439,
    "execution_start": 1670941372322,
    "source_hash": "682d3cef",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "回归系数： [ 0.64542258  0.47047873  0.33188398  0.00325404  0.42479699  0.00237965]\n",
      "回归系数： [ 0.59247915  0.58561574  0.26554358  0.10173112  0.49435997  0.13108641]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x22b17360550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, loss1, _ = SGD(num_epoch=num_epoch, learning_rate=0.1, \n",
    "    batch_size=batch_size)\n",
    "_, loss2, _ = SGD(num_epoch=num_epoch, learning_rate=0.001, \n",
    "    batch_size=batch_size)\n",
    "plt.plot(np.arange(num_epoch), loss1, color='blue', \n",
    "    label='lr=0.1')\n",
    "plt.plot(np.arange(num_epoch), train_losses, color='red', \n",
    "    ls='--', label='lr=0.01')\n",
    "plt.plot(np.arange(num_epoch), loss2, color='green',\n",
    "    ls='-.', label='lr=0.001')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('RMSE')\n",
    "plt.gca().xaxis.set_major_locator(MaxNLocator(integer=True))\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "cell_id": "ab7fb357b0fd435d822fe4a294c982a2",
    "deepnote_app_coordinates": {
     "h": 5,
     "w": 12,
     "x": 0,
     "y": 0
    },
    "deepnote_cell_type": "code",
    "deepnote_to_be_reexecuted": false,
    "execution_millis": 374,
    "execution_start": 1670941525843,
    "source_hash": "b6b01427",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "回归系数： [  1.02026986e+76  -1.13520942e+76   9.19402885e+75   5.66309332e+75\n",
      "  -4.91083973e+75   5.35399839e+75]\n",
      "最终损失： 5.33676249411e+77\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nCBERSej/A5aIqSfsCmfGAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x22b19e08320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, loss3, _ = SGD(num_epoch=num_epoch, learning_rate=1.5, batch_size=batch_size)\n",
    "print('最终损失：', loss3[-1])\n",
    "plt.plot(np.arange(num_epoch), np.log(loss3), color='blue', label='lr=1.5')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('log RMSE')\n",
    "plt.gca().xaxis.set_major_locator(MaxNLocator(integer=True))\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "deepnote": {},
  "deepnote_app_layout": "article",
  "deepnote_execution_queue": [],
  "deepnote_notebook_id": "8b4b472deff24300a73fc652e8cf55b0",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
